跳到主要内容
  1. Posts/

ffmpeg的视频处理方案

·1262 字· 5 分钟

制作cut的天选工具!强烈安利!

准备工作 #

下载ffmpeg #

下载地址:https://github.com/BtbN/FFmpeg-Builds/releases,选择 ffmpeg-master-latest-win64-gpl-shared.zip 版本

安装ffmpeg #

假设已经解压,进入文件夹并且点开 bin 文件夹,此时文件路径为 xx\ffmpeg\ffmpeg\bin,在地址栏复制路径

  1. win+R,输入 sysdm.cpl,按ENTER回车

  2. 进入高级选项卡,点击环境变量

  3. 系统变量部分,找到Path变量,点击编辑

  4. 编辑环境变量窗口中,点击新建,然后将上面的路径粘贴到这里

  5. 依次点确定关闭所有窗口

测试是否成功

win+R打开命提示符,输入 cmd 然后ENTER回车,弹出框中输入ffmpeg,如果步骤无误会显示 ffmpeg 相关信息:

图片描述

实际运用 #

需要自己修改文件路径与内容。

转换格式 #

假设我需要转换的文件名为 gavv01.mkv,并且文件路径为 D:\resource\gavv

win+R打开命提示符,输入cmd 然后ENTER回车,输入 cd D:\resource\gavv 导航到 gavv 文件夹;或者直接在对应文件夹打开命令提示符

单个转换 #

输入 ffmpeg -i "gavv01.mkv" -c:v copy -c:a copy "gavv01.mp4" ,按ENTER回车,其中 gavv01.mkv 是需要转换的文件,gavv01.mp4 是转换后的文件

批量转换 #

输入for %i in (*.mkv) do ffmpeg -i "%i" -c:v copy -c:a copy "%~ni.mp4",按ENTER回车,这个命令会转换对应文件夹中的所有文件

如果显示文件错误
  1. win+R打开命提示符,输入cmd然后ENTER回车
  2. 输入D:ENTER回车
  3. 输入cd "D:\resource\gavv"(双引号确保路径正确)
  4. 输入dir,回车,确认该文件夹中有需要转换的文件

压缩视频 #

crf值越高压缩得越严重,视频体积也越小,20接近无损,22为高质量,24中高画质推荐用,28有明显压缩痕迹。

假设我需要压缩的文件名为 gavv01.mp4,并且文件路径为 D:\resource\gavv

win+R打开命提示符,输入 cmd 然后ENTER回车,输入 cd D:\resource\gavv 导航到 gavv 文件夹;或者直接在对应文件夹打开命令提示符

单个压缩 #

输入ffmpeg -i "D:\resource\gavv\gavv01.mp4" -c:v libx265 -crf 23 -c:a copy "D:\resource\gavv\gavv01 压缩后.mp4",按ENTER回车

批量压缩 #

  1. 新建文本文档,用记事本打开,将以下内容粘贴进去:

    @echo off
    set "input_dir=D:\resource\gavv"
    set "output_dir=D:D:\resource\gavv\压缩后"
    
    for %%F in ("%input_dir%\*.mp4") do (
        echo 正在压缩:%%~nxF
        ffmpeg -i "%%F" -c:v libx265 -crf 23 -c:a copy "%output_dir%\%%~nxF"
    )
    echo 全部完成!
    pause
    

    第2行 input 是视频所在地址,第3行 output 是输出地址,我这里新建了一个“压缩后”文件夹

  2. 点击另存为,修改文件名为 xx.bat,保存类型选择所有文件(*.*),编码选择 ANSI,保存地址与需要转换的文件在同一文件夹

    1

  3. 双击此 bat 文件即可运行

裁剪视频 #

假设我需要裁剪的文件名为 gavv01.mp4,文件路径为 D:\resource\gavv,裁剪开始时间为 00:01:20,结束时间为 00:03:20

新建 bat 文档,步骤同批量压缩,文档内容如下:

@echo off
setlocal

set "input=D:\resource\gavv\gavv01.mp44"

echo 正在裁剪片段1:出场
ffmpeg -y -i "%input%" -ss 00:01:20 -to 00:03:20 -avoid_negative_ts 1 -b:v 4000k -c:v libx264 -pass 1 -an -f mp4 NUL
ffmpeg -y -i "%input%" -ss 00:01:20 -to 00:03:20 -avoid_negative_ts 1 -b:v 4000k -c:v libx264 -c:a copy -pass 2 "D:\resource\gavv\出场.mp4"

del ffmpeg2pass-0.log
echo 所有片段已完成。
pause